/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package asja.dao;

import asja.bd.Conexao;
import asja.excecoes.ValorInvalido;
import asja.formulario.CadastroFuncionarioFormulario;
import asja.modelo.FuncionarioModelo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;



/**
 *
 * @author Alice
 */
public class FuncionarioDao{
    
    private Connection conecta;
   
    
    
    public FuncionarioDao() throws SQLException {
        this.conecta = Conexao.getConnection();
    }
    
    
    // método para adicionar usuário do sistema.
    public void adicionacadastro(FuncionarioModelo in) throws SQLException, ValorInvalido{
        
    conecta = Conexao.getConnection();
    PreparedStatement stm = conecta.prepareStatement("insert into funcionario (nome, rg, cpf, estado, cidade, bairro, endereco, telefone, email, estado_civil, sexo, cargo, cep, complemento, dia_nascimento, mes_nascimento, ano_nascimento, dia_cadastro, mes_cadastro, ano_cadastro) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); 
 
     stm.setString(1, in.getNome());
     stm.setString(2,in.getRg());
     stm.setString(3, in.getCpf());
     stm.setString(4,in.getEstado());
     stm.setString(5,in.getCidade());
     stm.setString(6,in.getBairro());
     stm.setString(7,in.getEndereco());
     stm.setDouble(8, in.getTelefone()); 
     stm.setString(9,in.getEmail());
     stm.setString(10,in.getEstado_civil());
     stm.setString(11,in.getSexo());
     stm.setString(12,in.getCargo());
     stm.setString(13, in.getCep());
     stm.setString(14, in.getComplemento());
     stm.setInt(15, in.getDia_nascimento());
     stm.setString(16, in.getMes_nascimento());
     stm.setInt(17, in.getAno_nascimento());
     stm.setInt(18, in.getDia_cadastro());
     stm.setString(19, in.getMes_cadastro());
     stm.setInt(20, in.getAno_cadastro());
     
      
     stm.execute(); //executa o comando para salvar no banco;
     stm.close();
   
    }
    
    
    public void editar_cadastro(FuncionarioModelo in) throws SQLException, ValorInvalido{
        
    conecta = Conexao.getConnection();
    //PreparedStatement stm = conecta.prepareStatement("update funcionario set nome=?, rg=?, cpf=?, cidade=?, bairro=?, endereco=?, telefone=?, email=?, cargo=?, cep=?, complemento=? where rg=?"); 
    PreparedStatement stm = conecta.prepareStatement("update funcionario set nome=?, cpf=?, cidade=?, bairro=?, endereco=?, telefone=?, email=?, cargo=?, cep=?, complemento=? where rg=?"); 
    
     stm.setString(1, in.getNome());
     stm.setString(2, in.getCpf());     
     stm.setString(3,in.getCidade());
     stm.setString(4,in.getBairro());
     stm.setString(5,in.getEndereco());    
     stm.setDouble(6, in.getTelefone()); 
     stm.setString(7,in.getEmail());     
     stm.setString(8,in.getCargo());
     stm.setString(9, in.getCep());
     stm.setString(10, in.getComplemento());
     stm.setString(11,in.getRg());
     
    // 
   /*  
      stm.setString(6,in.getEstado());
     
     
    
    // stm.setString(10,in.getEstado_civil());
    // stm.setString(11,in.getSexo()); 
     
    // stm.setInt(15, in.getDia_nascimento());
    // stm.setString(16, in.getMes_nascimento());
   //  stm.setInt(17, in.getAno_nascimento());
  //   stm.setInt(18, in.getDia_cadastro());
  //   stm.setString(19, in.getMes_cadastro());
  //   stm.setInt(20, in.getAno_cadastro());*/
     
      
     stm.execute(); //executa o comando para salvar no banco;
     stm.close();
   
    }
    
    
    //pesquisar se existe o determinado usuario no banco de dados
    public List <FuncionarioModelo> pesquisa_nome1(String nome) throws SQLException, ValorInvalido {
        
        //a pesquisa sera por nome e usuario
       PreparedStatement stmt = this.conecta.prepareStatement("select * from funcionario where nome like ?");
       stmt.setString(1, nome);
       //stmt.setString(2, senha);
       ResultSet rs = stmt.executeQuery(); //Para consultas, retorna um objeto ResultSet    
       List <FuncionarioModelo> usuarios = new ArrayList <FuncionarioModelo>();// no caso de ter mais registros ele lista
       
       while (rs.next()) {
            FuncionarioModelo usu = new FuncionarioModelo();
            usu.setNome(rs.getString("nome"));
            usu.setRg(rs.getString("rg"));
           System.out.println(rs.getString("nome")+"        "+rs.getString("rg"));                    
                     
            //adiciona objeto a lista
            usuarios.add(usu);
        }
        stmt.close();
        conecta.close();
        return usuarios;
        
    }
    
    
    
    
    
    
    
    /*
    
    // método para adicionar usuário do sistema.
    public void alteracadastro(FuncionarioModelo in) throws SQLException{
        
    conecta = Conexao.getConnection();
    PreparedStatement stm = conecta.prepareStatement("update funcionario set nome=?, rg=?, cpf=?, estado=?, cidade=?, bairro=?, endereco=?, telefone=?, email=?, estado_civil=?, sexo=?, cargo=?, cep=?, complemento=?, dia_nascimento=?, mes_nascimento=?, ano_nascimento=?, dia_cadastro=?, mes_cadastro=?, ano_cadastro=? values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); 
 
     stm.setString(1, in.getNome());
     stm.setString(2,in.getRg());
     stm.setInt(3, in.getCpf());
     stm.setString(4,in.getEstado());
     stm.setString(5,in.getCidade());
     stm.setString(6,in.getBairro());
     stm.setString(7,in.getEndereco());
     stm.setInt(8, in.getTelefone()); 
     stm.setString(9,in.getEmail());
     stm.setString(10,in.getEstado_civil());
     stm.setString(11,in.getSexo());
     stm.setString(12,in.getCargo());
     stm.setInt(13, in.getCep());
     stm.setString(14, in.getComplemento());
     stm.setInt(15, in.getDia_nascimento());
     stm.setString(16, in.getMes_nascimento());
     stm.setInt(17, in.getAno_nascimento());
     stm.setInt(18, in.getDia_cadastro());
     stm.setString(19, in.getMes_cadastro());
     stm.setInt(20, in.getAno_cadastro());
     
      
     stm.execute(); //executa o comando para salvar no banco;
     stm.close();
   
    }
    
    */
    
   
    
    
    
    
}
